/*
 * EvolutiveCaseGeneratorBuilder.h
 *
 * Builder to build EvolutiveCaseGenerator classes
 *
 *  Created on: 29/05/2011
 *      Author: godinho
 */

#ifndef EVOLUTIVECASEGENERATORBUILDER_H_
#define EVOLUTIVECASEGENERATORBUILDER_H_

#include <evolutive/CaseSelector.h>
#include <evolutive/LifeSimulator.h>
#include <evolutive/FitnessFunction.h>
#include <evolutive/OffspringGenerator.h>
#include <evolutive/EvolutiveCaseGenerator.h>
#include <evolutive/EventListener.h>

class EvolutiveCaseGeneratorBuilder {
public:
	EvolutiveCaseGeneratorBuilder();

	virtual ~EvolutiveCaseGeneratorBuilder();

	virtual EvolutiveCaseGenerator* buildEvolutiveCaseGenerator();

	void setEventListener(EventListener* listener);

protected:

	virtual CaseSelector* buildCaseSelector();

	virtual LifeSimulator* buildLifeSimulator();

	virtual FitnessFunction* buildFitnessFunction();

	virtual OffspringGenerator* buildOffspringGenerator();

private:
	EventListener* mEventListener;
};

#endif /* EVOLUTIVECASEGENERATORBUILDER_H_ */
